<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>变量作用域</title>
</head>
<body>
    <script>
        // 变量作用域
        // a 这个变量的作用域是全局的，所以a我们称之为“全局变量”
        var a = 15;
        function myFunc(){
            // c 这个变量的作用域是整个“函数方法体”，所以c我们称之为“局部变量”
            // c 作为函数体内部局部变量，不能在函数体之外使用。
            // var a = 40;
            // 使用变量时，会先在自己的作用域中查找是否有该变量的作用域，如果有就用，如果没有，就在上一级的作用域里找
            // 如果在全局中也没有，就报错，ReferenceError: c is not defined。报错之后，函数就不能继续了。
            var a = 40;
            var c = a + 20;//60
           console.log(c);
        }
        myFunc();
        // js中的函数体内部可以嵌套函数,那么内部函数可以访问外部函数中定义的变量，反之不行。

        function myFunc2(){
            var x = 1;
            function myFunc3(){
                var y = 3 + x;
            }
            // console,log(y); 
            //  y is not defined
        }
        // if/for 语句中的{}不能形成作用域。
        if(a > 5){
            var b = 10;
            var c = a + b;//25
        }
        console.log(c);
        

    </script>
</body>
</html>